import http from './http';

/**
 * 获取入党申请书列表
 * @param {Object} data - 查询条件
 * @param {string} [data.name] - 申请人姓名，支持模糊查询
 * @param {string} [data.status] - 状态，精确匹配
 * @param {number} pageNum - 页码，从1开始
 * @param {number} pageSize - 每页显示数量
 * @returns {Promise} - 入党申请书列表，包含HTTP状态码
 */
export const getApplicationList = (data, pageNum, pageSize) => {
  return http.post(`/party/application/selectPage?pageNum=${pageNum}&pageSize=${pageSize}`, data);
};

/**
 * 获取入党申请书总数
 * @param {Object} data - 查询条件
 * @param {string} [data.name] - 申请人姓名，支持模糊查询
 * @param {string} [data.status] - 状态，精确匹配
 * @returns {Promise} - 入党申请书总数，包含HTTP状态码
 */
export const getApplicationCount = (data) => {
  return http.post('/party/application/selectCount', data);
};

/**
 * 获取入党申请书详情
 * @param {number} id - 入党申请书ID
 * @returns {Promise} - 入党申请书详情，包含HTTP状态码
 */
export const getApplicationDetail = (id) => {
  return http.get(`/party/application/getById?id=${id}`);
};

/**
 * 审核入党申请书
 * @param {Object} data - 审核信息
 * @param {number} data.id - 入党申请书ID
 * @param {string} data.status - 审核状态，approved 或 rejected
 * @param {string} [data.comment] - 审核意见，将映射到后端的review字段
 * @param {string} [data.time] - 审核日期时间，如果不提供将使用后端服务器时间
 * @returns {Promise} - 操作结果，包含HTTP状态码
 */
export const reviewApplication = (data) => {
  return http.post('/party/application/submit', data);
};

/**
 * 提交入党申请书（供用户使用）
 * @param {Object} data - 申请书信息
 * @param {string} data.name - 申请人姓名
 * @param {string} data.content - 申请书内容
 * @returns {Promise} - 操作结果，包含HTTP状态码
 */
export const submitApplication = (data) => {
  return http.post('/party/application/insert', data);
};